home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-05-11 | 62.4 KB | 1,824 lines |
- (manual.doc)
-
- Welcome to DOS Extensions for Professionals
-
- This is the Shareware Version of "DOS Extensions for Professionals",
- a Unified Package of file utilities bringing to the PC the power,
- functionality, and increased personal productivity usually associated
- only with minicomputer-based software. Designed to meet the processing
- needs of the corporate community as well as of demanding home users,
- these utilities feature designed-in robustness, flexibility, and
- generality leading to predictable results in the most trying and
- unusual situations.
-
- These programs are not crippled or hamstrung in any way. They are,
- in fact, identical to those offered in the full retail version.
-
- Use these programs and test them for THREE WEEKS to see if they meet
- your daily needs. If you don't like these programs - if they don't
- help you solve your problems, delete them from your disk. You are
- under no further obligation.
-
- If, however, you find these utilites useful and you want to make them
- a permanent part of your collection, you must register to obtain a
- full license for continued use.
-
- The "DOS Extensions for Professionals" registration fee is $19. For
- that fee you recieve a printed manual, a full-use license, a new disk
- insuring you have the latest version of "DOS Extensions for
- Professionals", and mail product support as needed.
-
- To register, fill out the order form found in the file "REGISTER.DOC"
- (copy register.doc prn), and send it with $19 plus $5 ($8 overseas)
- shipping and handling to
-
- Allison Software
- 166 Shady Lane
- Apollo, PA 15613
- USA
-
- The latest version with printed manual and license will be shipped to
- you immediately.
-
- Thank you for helping make shareware work.
-
-
-
-
- John Allison
-
-
-
-
-
- DOS Extensions for Professionals
- Programs:
-
- Diff .................................................. 2
- Notes
- binary
- output & synchronization
-
- Dump .................................................. 4
- Notes
- viewing deleted directories ............ 7
- boot tables ............................ 8
- the boot sector
- the media descriptor byte
- directory format
- disk tutor ............................. 9
- the boot sector
- the file allocation table
- directories
- the root directory
-
- Search ............................................... 14
- Notes
- binary
-
- Split ................................................ 16
-
- Sub .................................................. 18
- Notes ................................... 21
- file renaming convention
- order of execution
-
- Xdel ................................................. 23
- Notes ................................... 24
- XDEL and XDIR contrasted
- secure deletes
-
- Xdir ................................................. 26
-
- Xhelp ................................................ 29
-
- General Topics:
-
- Command Modifiers .................................... 30
-
- Wildcards & Recursive Notation ....................... 30
-
- Implied Wildcards .................................... 31
-
- Examples of Notation ................................. 31
-
- Bug Reporting ........................................ 32
-
- Legalities ........................................... 33
-
- 2
-
-
- DIFF
- Displays the differences between two similar text files line-by-line.
- Whether you've made minor or massive changes, DIFF displays only the
- differences while resyncing on identical text.
-
- usage:
- diff file_1 [file_2] [/Comand_Modifiers...]
-
- If no file_2 is specified, file_2 takes the name of file_1
- but with the extension ".BAK".
-
- Wildcards and recursive notation are not supported by the diff command.
-
- Command Modifiers:
- /case /numbers /notabs /pause
-
-
-
- EXAMPLES:
-
- Compare the files RESUME.TXT and RESUME.BAK ignoring any differences
- due to changes in capitalization.
-
- DIFF resume.txt /nocase
-
- Note that because no second file was specified in the comparison,
- RESUME.BAK was assumed.
-
- Compare two files outputing any differences without including their
- respective line numbers.
-
- DIFF source.c source.old /nonumbers
-
- The second version of a file was edited with a text processor which
- replaces blanks with tabs. Because blanks and tabs are not the same
- character, the lines in which they fall would normally be displayed as
- different. In this case, flag only noticeable differences between the
- two versions of the file.
-
- DIFF smith.1 smith.2 /notabs
-
-
- NOTES:
- Binary -
-
- Diff is designed to work with text files only. Using it to compare
- binary files will give hard-to-interpret and unpredictable results.
-
- Comparing identical binary files will show them to be identical, but
- slightly unidentical binary files may also test okay. String
- comparison functions which don't scan past the first null in any
- given line are the immediate cause for this behavior.
-
-
- 3
-
-
- The real problem, however, is how to report inequities between binary
- files and how to resynchronize after differences are found. The line,
- the normal unit of resynchronization, has no meaning in binary files.
- Resync could be done on a byte-by-byte basis, but the value of the
- whole effort seems questionable.
-
-
- Output -
-
- The diff command displays the differences between two text files
- on a line-by-line basis. Those lines which actually differ are
- displayed, first those from "file A", followed by those from "file B",
- a section at-a-time, until the entire files are compared.
-
- Diff does its best to resyncronize the two files, so if one has had
- lines altered, added, or deleted, diff will recognize when these
- sections of differences have past and will consider the files to be
- matching again.
-
- The last lines to be output for the two files are the first ones
- which match. Three matching lines are actually required for
- complete resyncronization. You may find in an unmatching section
- one or two identical lines surrounded by different lines.
-
- Both files are read and stored internally within an unmatched
- section. The rescanning effort increases as the square of the
- number of unmatched lines. If you compare two completely dissimilar
- files, the process may run out of memory before the end of file
- markers are detected.
-
- At the conclusion of a comparison, a summary is issued giving the
- total number of lines in each file, the total number of differing
- sections, and the total number of lines which differ.
-
- 4
-
-
- DUMP
- Displays the contents of binary files, directories, disk sectors
- (including an interpreted boot sector), disk FAT's, and cluster chains.
-
- Addresses the internals of any file by sector or byte. Searches the
- FAT for bad clusters, shows what's really in your directories, and
- snoops through deleted files.
-
- Explains the details of the DOS file structure with the on-line
- -DISK_TUTOR and -BOOT_TABLE help sections.
-
- usage:
- dump [input_file] [/Comand_Modifiers...]
-
- Input File:
- The name of any disk, file, or directory to be viewed.
-
- Wildcards and recursive notation are not supported by the dump command.
-
- Command Modifiers:
- /boot /byte /cluster /contents /disk /extended /fat /first
- /interpret /last /numbering /pause /sector
-
- See also -BOOT_TABLE and -DISK_TUTOR available from within dump.
-
-
-
- EXAMPLES:
-
- Prepare output for a printer.
-
- DUMP test.1 /noextended /nopause > x.lis
-
- /Noextended suppresses control characters which might upset the printer.
-
- /Nopause should be used anytime the output is redirected to a file or
- to a printer to avoid extra characters in the output and to avoid
- having to strike a key after every page of data - the redirected
- process will hang for no apparent reason.
-
- View the entire contents of the binary file PRINT.COM.
-
- DUMP print.com
-
- If you wanted to view just the first 5 sectors, you can enter
-
- DUMP print.com /sector=1,5
- or
- DUMP print.com /first=5
-
- The range doesn't have to start with the first sector. It can start
- anywhere and can even be anchored to the end of the file.
-
- DUMP print.com /sector=-5,-1
-
- 5
-
-
- or
- DUMP print.com /last=5
-
- Of course /first or /last by itself means /first=1 or /last=1.
-
- Suppose you want to view the 1000th byte of a file. There are 512
- bytes/sector, so the 1000th byte must fall close to the end of the
- second sector. But it is simpler to say
-
- DUMP print.com /byte=1000
-
- and the line containing byte number 1000 is output. Remember, unlike
- sectors which are numbered in files (but not on the disk) from 1, the
- first byte is byte 0. To see the 1000th byte, you should actually ask
- for /byte=999.
-
- Again, a range of bytes is permitted. You could specify
- /bytes=6500,6600 , or you could anchor the search from the last byte of
- the file (-1) as in
-
- DUMP print.com /byte=-300,-200
-
- to see the second-to-the-last 100 bytes. Of course the keywords /first
- and /last are also operative here as in
-
- DUMP print .com /byte /first=600
-
- So far the output has been displayed in base 16 - hexadecimal. You can
- just as easily display it as good old- fashioned decimal or as base 8
- (octal).
-
- DUMP print.com /contents=decimal
- or
- DUMP print.com /contents=octal
-
- Similar notation applies to numbering. Byte numbering defaults to hex,
- but you can force it to decimal or to octal.
-
- DUMP print.com /numbering=decimal
- or
- DUMP print.com /numbering=octal
-
- Closely related to files are directory and subdirectories. Technically
- these entities aren't files, but you can view them through a special
- directory-interpreted dump.
-
- DUMP .
- and
- DUMP \
-
- dump the current and root directory. The latter especially may hold
- interesting hidden files as well as a volume id.
-
- In addition to viewing the contents of files and directories, DUMP
-
- 6
-
-
- enables you to address disk sectors directly by using the /disk
- modifier. The first disk sector is 0. (In files, DUMP considers the
- first file sector to be 1.) Dump disk sectors 5 through 10 of the
- current disk.
-
- DUMP /disk=5,10
- or
- DUMP /disk /sector=5,10
-
- You can also address the last sector of the disk in different ways.
-
- DUMP /disk=-1
- or
- DUMP /disk /last
-
- The first sector of a disk is special. It is the boot sector.
-
- DUMP /disk /first
-
- gives the normal uninterpreted dump. To get an interpreted dump of the
- boot sector, enter
-
- DUMP /boot
-
- Try this on different sized disks.
-
- Related to the boot sector is an area following it called the FAT (File
- Access Table. See the discussion under Notes (Disk Tutor).) DUMP
- allows you to view the FAT directly.
-
- DUMP /fat
-
- You can specify which clusters in the FAT to see by giving a range
-
- DUMP /fat=6,100
- or
- DUMP /fat /first=30
-
- The first cluster is 2.
-
- Each cluster holds a single value - the number of the next cluster in
- the chain. There are special values which are assigned meanings: free
- cluster, end of chain, and bad cluster. Normally you see the
- interpretations of these values. If you want to see the values
- themselves, use /nointerpret.
-
- DUMP /fat=-300,-200 /nointerpret
-
- A special kind of interpreted clusters are bad clusters set by the disk
- formatter to mark bad disk sectors. To view just these, enter
-
- DUMP /fat=bad
-
- The FAT is a collection of clusters - mappings of disk sectors. As
-
- 7
-
-
- mentioned above, clusters can be chained. DUMP allows you to view
- these chains in toto or to pick up anywhere within a chain and trace to
- its end.
-
- DUMP print.com /cluster
-
- traces the entire chain associated with the file PRINT.COM telling you
- in which logical disk sectors the file resides. You can trace the
- cluster chains of subdirectories even though we know directories aren't
- files.
-
- DUMP . /cluster
-
- Chain tracing doesn't work on the root directory because it isn't in
- the FAT (it doesn't reside in the files area of the disk and is not
- extensible.)
-
- By entering
-
- DUMP /cluster=68
-
- you pick up whatever chain, if any, includes cluster 68 tracing it to
- its end.
-
-
- NOTES:
-
- deleted directories -
-
- You can dump deleted directories in the standard directory format if
- you know the sectors where the directory lay and, of course, it has
- not yet been overwritten by new data.
-
- The command "dump \" causes the root directory of the current
- device to be dumped. In the upper left corner there is identifying
- information such as, "Sector 129 (1 of 32)". Using the /sector=
- Command Modifier, you can look at any range in those 32 sectors. By
- giving it a value greater than 32, you can look at any sector on the
- disk through directory-colored-glasses.
-
- Subtract one less than the root starting sector from the desired sector
- to calculate the proper offset. In our example if you want to view
- disk sector 661 as a directory, calculate the offset (661 - (129 - 1))
- and enter
-
- DUMP \ /sector=533
-
-
-
- 8
-
-
- The Boot Sector -
-
- Byte Size Contents Implemented
-
- 00H 3 E9 XX XX or EB XX 90
- 03H 8 OEM name and version
- 0BH 2 bytes per sector
- 0DH 1 sectors per allocation unit
- 0EH 2 reserved sectors starting at
- logical sector 0
- 10H 1 number of FAT's
- 11H 2 number of root directory entries
- 13H 2 total sectors in logical volume
- 15H 1 media descriptor byte
- 16H 2 number of sectors per FAT
- 18H 2 sectors per track DOS 3.0
- 1AH 2 number of heads
- 1CH 4 number of hidden sectors 2 bytes DOS 3
- 4 bytes DOS 4
- 20H 4 total sectors in logical volume DOS 4.0 &
- size > 32MB
- 24H 1 physical drive number
- 25H 1 reserved
- 26H 1 (29H) - extended boot signature
- 27H 4 32-bit binary volume ID
- 2BH 11 volume label
- 36H 8 reserved
- 3EH 193 bootstrap
-
-
- The Media Descriptor Byte -
-
- Code Size Description
-
- F0H 3.5 2-sided, 18 sector
- F8H fixed disk
- F9H 5.25 2-sided, 15 sector
- 3.5 2-sided, 9 sector
- FCH 5.25 1-sided, 9 sector
-
-
- FDH 5.25 2-sided, 9 sector
- 8 1-sided, single density
- FEH 5.25 1-sided, 8 sector
- 8 1-sided, single density
- 8 2-sided, double density
- FFH 5.25 2-sided, 8 sector
-
-
- 9
-
-
- Directory Format -
-
- Byte Size Contents
-
- 00 8 file name
- 08 3 extension
- 11 1 file attribute
- bit
- 0 read only
- 1 hidden (excluded from normal searches)
- 2 system (excluded from normal searches)
- 3 volume label (root directory only)
- 4 directory (excluded from normal searches)
- 5 archive (set when modified)
- 6 reserved
- 7 reserved
- 12 10 reserved
- 22 2 time created or updated
-
- FEDCBA9876543210
- hhhhhmmmmmmsssss
-
- h - hours (0-23)
- m - minutes (0-59)
- s - double seconds (0-29)
- 24 2 date created or updated
-
- FEDCBA9876543210
- YYYYYYYMMMMDDDDD
-
- Y - year (0 - 199) add 1980
- M - month (1-12)
- D - day (1-31)
- 26 2 starting cluster
- 28 4 file size (Least significant byte first.)
-
- DISK TUTOR:
-
- What follows is a brief introduction to the internals of the DOS disk
- structure.
-
- The smallest addressable portion of a disk is the sector. A sector is
- 512 bytes long. Even though a disk's capacity is measured in
- megabytes, the disk itself is accessed by the software in terms of
- logical sectors, numbered 0 through n. (Underlying logical sectors are
- the physical realities of heads, tracks, and sectors within each track.
- But these are too ugly to consider here.)
-
- The Boot Sector -
-
- The first sector on each disk, sector 0, is the boot sector. Even if
- the disk doesn't contain an operating system and is therefore not
- bootable, it contains a boot sector applied by the high level format
- program.
-
- 10
-
-
-
- Two types of data are included in the boot sector. The physical
- characteristics of the disk (total number of sectors on the disk,
- sectors per cluster, etc) are found in the first part of the boot
- sector. You can view at this information with DUMP /boot.
-
- A bootstrap is stored in the second half of the boot sector. The
- bootstrap is a small program which, on the basis of information found
- in the first part of the sector, reaches out onto the disk, finds key
- operating system files (e.g. IBMBIO.COM and IBMDOS.COM), loads them
- into memory, and executes them thus bringing the system to life.
-
- If the required system files cannot be found on the disk, the familiar
- "Non-System disk or disk error" message is printed out. You can find
- this message near the end of sector 0 with the command DUMP /disk=0.
-
- The File Allocation Table -
-
- The File Allocation Table, affectionately known as the FAT, is the
- method DOS uses to keep track of which disk sectors are used and which
- are free. The FAT is really a big lookup table. Its starting sector
- and length are known from the boot sector. The entries, known as
- allocation units or clusters, chain from one to another throughout the
- FAT. Cluster 5 might contain the value 6, which chains it to the sixth
- cluster, which in turn might be chained to the tenth. A special code
- marks the end of each chain. In fact, many chains are only one link
- long.
-
- Each FAT chain provides the system with a map to the sectors allocated
- for each file. Given a cluster number, you can mathematically
- calculate its related sector's offset from the beginning of files area.
- This cluster-to-sector mapping, when combined with the cluster chaining
- property, provides a completely flexible sector methodology for file
- creation and access. Sectors can be accessed sequentially although
- their physical locations may be randomly distributed across the disk,
- and logical random access is likewise efficiently supported through the
- same chaining mechanism.
-
- Each cluster or allocation unit maps to one or more sectors depending
- on the size and type of disk. This ratio, known as cluster size,
- determines the minimum size of a file. Suppose you want to store one
- character. One character requires one byte, but the minimum
- addressable disk unit is the sector - 512 bytes. So whether you're
- storing one byte or 512, the disk requirements are the same, one sector.
-
- Suppose a disk's cluster size is 4. That means each cluster in the FAT
- points to a group of four sectors. Even though a one-byte file may
- require only one disk sector, four are effectively used (allocated)
- because their single common cluster is used by that first sector. This
- is why, in an XDIR /full listing, you may see 2048 bytes (4 sectors)
- allocated for even the smallest file.
-
- In view of the inherent waste in multiple sector clusters, you may well
- ask why larger clusters are used at all. There are several good
-
- 11
-
-
- reasons. Multiple sector clusters raise disk I/O efficiency when large
- data transfers take place. Because all sectors of a cluster are
- contiguous, the underlying software can support multi-sector reads when
- loading executable files, for instance. Large clusters give rise to a
- smaller, more efficient FAT. A four sectors/cluster FAT takes only one
- quarter the disk and in-memory buffer space that a single
- sector/cluster arrangement requires. In addition, the
- greater-than-32MB-disks supported by DOS 4 and 5 are possible only
- because each cluster references more than one sector. The unsigned 16
- bit cluster can address only 64k sectors - 32MB. Multiple sectors per
- cluster increase that top disk limit by the multiple factor. So you
- see, there are positive trade-offs in the sectors-per-cluster question.
-
- Depending on the size of a disk, DOS will use either 12 or 16 bit
- clusters. The smaller cluster size allows up to 4k entries while the
- larger, as previously mentioned, permits 64k.
-
- Some cluster values have special meanings. The first two entries of
- the FAT (0 and 1) are reserved. Cluster 2 is the first valid cluster.
- The special cluster values are:
-
- 16 bit cluster 12 bit cluster
-
- 0 0 - free cluster
- FFF0 - FFF6H FF0 - FF6H - reserved cluster
- FFF7H FF7H - bad cluster
- FFF8 - FFFFH FF8 - FFFH - last cluster in chain
-
- You can see that with the exception of the free cluster marker (0),
- they are all near the upper limit of the cluster address range.
-
- You should also note that if an area of the disk is bad, the formatter
- will mark the whole cluster as bad. Any good sectors within that
- cluster are unreachable by normal FAT-based I/O. This is not a
- significant problem in practice. Bad spots on disks tend to span
- several sectors and often several clusters.
-
- A bad FAT, for obvious reasons, is catastrophic. Some disks support
- multiple FAT's incase one becomes unreadable during use.
-
- Directories -
-
- The FAT keeps track of which sectors belong to which files and which
- sectors are free. Directories give names to files and impose the
- hierarchical file structure on the disk which, since the advent of the
- UNIX (TM) operating system in the early 1970's, has become standard in so
- many other operating systems.
-
- Directory entries are 32 bytes long, 16 to the sector. They contain
- the file name, extension, file attribute, reserved area, date and time
- of creation or last update, starting cluster, and file size. (See DUMP
- - BOOT_TABLES)
-
- Besides the file name, the most significant part of the directory entry
-
- 12
-
-
- is the starting cluster. This points to the first cluster of a cluster
- chain in the FAT and to the physical location of the file on the disk.
-
- The file attribute gives special meaning to certain files. The
- attributes are:
-
- Hidden file
- System file
- Volume label
- Directory
- Archive (Pending)
-
- There can be only one Volume label on a disk, and it must be in the
- root directory. Its 11 characters are held in the file name and
- extension sections of the entry.
-
- Before they're first used, directory entries contain null (0)
- characters in the file name. As files are added, their names are
- entered starting at the top of the directory.
-
- Files are deleted by overwriting the first character of the name with
- the lower case sigma character (229). The FAT entries are free, but,
- as far as the directory is concerned, no other information is changed.
- This is why special utilities can "unerase" a file (except for
- recovering the first character of its name).
-
- The next time a file is added to a directory, it overwrites the first
- record it finds marked as deleted, or in the absence of any of these,
- it uses the first null entry.
-
- When a directory is searched, the search stops at the first null entry.
- There is no more data to be found. Thus a directory which once held
- many files takes noticeably longer to search than a nearly empty one,
- even after most of those files are deleted. Searches must still
- continue to the old high water mark.
-
- The Root Directory -
-
- There are two kinds of directories in DOS: the root directory and
- subdirectories. The root (top level) directory has its roots in the
- first version of DOS in which it was the only directory. The root
- directory is not allocated via the FAT, but is of a fixed length whose
- size is dependent upon the disk type. It is located after the FAT(s)
- and before the files area, where the FAT mapping begins. Its length
- and location is one of those constants specified in the boot sector.
- (Try DUMP /boot.) Once you fill up the root directory, it's filled up.
-
- Subdirectories, on the other hand, are mapped by the FAT, are
- extensible, and can reside anywhere. They never can be filled up
- although too-large subdirectories are awkward and slow.
-
- Subdirectories are distinguished from root directories in that the
- former have entries to themselves and to their parent directories, the
- familiar "." and ".." files.
-
- 13
-
-
-
- The distinction between the root directory and subdirectories is hidden
- from both the user and from the programmer who uses BIOS calls. Only
- those foolish enough to grovel in the lower reaches of DOS ever need be
- concerned with those subtle differences.
-
-
- 14
-
-
- SEARCH
- Quickly and silently locates text strings in any file anywhere on your
- whole disk. The simplicity of this favorite program belies its power
- and usefulness.
-
- usage:
- Search file_spec "text string" [/Comand_Modifiers...]
-
- file_spec:
- A wildcarded recursive file specification.
-
- "Text string" may be quoted or unquoted depending on whether it contains
- special characters which may affect command execution (eg: blanks or '/').
-
- Command Modifiers:
- /before /case /numbers /pause /since
-
-
-
- EXAMPLES:
-
- Flag any C language source files in the program subdirectories on the
- current drive which call the binary_search() function.
-
- SEARCH \user\pgm...*.c binary_search(
-
- Normally searches are made independent of the case of either the search
- string or of the text in the files being searched. This case
- insensitive default would yield a match on a file containing the text
- "ABCDEF" against the requested string "AbCdEf".
-
- Make a case-sensitive search of all files in the letters subdirectory
- for the name Smith. This search would not find "blacksmith" because of
- case-sensitivity.
-
- SEARCH C:\admin\letters Smith /case
-
- Search all files in the current directory for the phrase "Wall Street",
- outputing the line number as well as the entire line in which the
- phrase occurs.
-
- SEARCH * "Wall Street" /numbers
-
- Note the use of quotes to include blanks and tabs in a search. Without
- the quotes, * Wall Street would have appeared to the program as three
- arguments instead of the require two.
-
- Locate all letters referencing airline travel in the current directory
- written between June 1st and July 15th.
-
- SEARCH *.ltr air /since=1-June /before=15-July
-
- Flag all references to Pittsburgh in your manuscript, output the line
- in which the reference occurs with the two following lines, and
-
- 15
-
-
- redirect the output to a file.
-
- SEARCH chaptr*.doc Pittsburgh > pgh.ref /context=3 /nopause
-
- Note that /nopause should be used when output is redirected to a file
- or to the printer.
-
- Demonstrate a search of binary files in a directory holding system
- programs.
-
- SEARCH C:\DOS Copyright
-
-
- NOTES:
-
- Binary -
-
- The search command can scan both binary as well as ASCII text files
- while looking for a text string entered as a command line argument.
-
- The interpretation of exactly what consitutes a line is different
- in the two cases. A line in a text file is denoted by a carriage
- return/line feed sequence (newline character). When the text
- string is found, the entire line containing that string is
- displayed.
-
- In a binary file, the carriage return/line feed sequence has no
- special meaning and may be randomly distributed throughout the file.
- For this case, a line is defined as 512 bytes. When the text string
- is found, the text string and enough printable context to total
- approximately 70 characters is displayed. Null characters are taken
- as absolute delimiters before and beyond which text is not displayed
- and may limit the displayed text to substantially less than 70
- characters. The remainder of the 512 byte line is scanned for
- additional matches and, if found, are displayed separately. Unlike
- text files, matching text is searched for across line boundaries in
- binary files.
-
- The search command attempts to determine whether a file is binary or
- text by reading the first 1024 bytes and scanning for included null
- characters. If found, these are interpreted as indicating a binary
- file. The alternate method of searching for the carriage return/line
- feed sequence would impose a maximum line length on text files.
-
-
- 16
-
-
- SPLIT
- Breaks text files into pieces or segments by four methods. Specify
- the number of segments, the length of each segment, that breaks be
- made at certain lines, or that breaks be made only at lines containing
- specific search text.
-
- usage:
- split input_file [/Comand_Modifiers...]
-
- Input_file:
- A wildcarded recursive file specification.
-
- Output Files:
- Output files, if any, are generated using the names of the
- original files with extensions .001, .002, .003, etc.
-
- Command Modifiers:
- /after /at /before /every /into /pause
-
-
-
- EXAMPLES:
-
- Split all files ending in .BIG on the current drive into files no
- larger than 1000 lines each.
-
- SPLIT \...*.big /every=1000
-
- The new split files will assume the names of their parents but will be
- given the extensions .001, .002, .003, etc.
-
- Split a file into five equal pieces.
-
- SPLIT work_c /into=5
-
- The split is made by line count, not by file size. Each piece will
- have the same number of lines, if possible.
-
- Divide a file at lines 235, 609, and 964.
-
- SPLIT book.ms /at=235,609,964
-
- /At makes the enumerated lines the first one in each new file. This
- example yields four files:
-
- source lines
- BOOK.001 1 - 234
- BOOK.002 235 - 608
- BOOK.003 609 - 963
- BOOK.004 964 - end
-
- Files can also be divided base on text found in the file. If you want
- to split a file everywhere after the text " END" occurs in a
- concatenated collection of FORTRAN files, the command
-
- 17
-
-
-
- SPLIT lib1.for /after=" END"
-
- creates a new file for each occurrence of the FORTRAN END. If only a
- single fine END statement is found, no split is made.
-
- Text-based splits can also be made before lines containing the target
- text is found. Split all files in the current directory beginning with
- a "T" and with extension .IGS before lines containing the string "SHEET
- NO." unless that string occurs only in the first line of the file.
-
- SPLIT t*.igs /before="SHEET NO."
-
- 18
-
-
- SUB
- Substitutes characters in lines in text files. This program deletes
- characters, add characters, replaces tabs with spaces, and replaces
- spaces with any size tabs. It strips trailing blanks from lines or
- pads out each line to a fixed length.
-
- SUB can also limit its operations to lines containing search strings
- and anchor operations to that text.
-
- This utility is useful for dynamically creating complex batch and
- script files based on directory contents. This is one of those
- utilities for which you may see no need - until you need it, and then
- it's indispenable.
-
- usage:
- sub input_spec [output_file] [/Comand_Modifiers...]
-
- input_spec:
- A wildcarded recursive file specification.
-
- Output File:
- If no output_file is specified, the output_file takes the name of
- the input_file, and the input_file is given the extension ".BAK".
-
- Command Modifiers:
- /at /bak /before /copy /delete /for /from
- /insert /noexpand /pad /pause /silent /strip /tabs
- /truncate
-
-
-
- EXAMPLES:
-
- SUB commands normally are applied to each line of one or more files.
- There are roughly three categories of Command Modifiers which can be
- used with the SUB command: /pad, /strip, /tabs, and /truncate apply to
- whole lines; /copy, /delete, and /insert apply to specified columns
- within a line; and /at, /before (the same as /at) , /for, and /from
- indicate in which columns the action is to take place.
-
- Insure that all lines of a file are 120 character long (excluding the
- carriage return).
-
- SUB list.txt /pad=120
-
- Insure that no line of a file exceeds 30 characters.
-
- SUB list.txt /truncate=30
-
- Strip trailing blanks from those lines which contain them.
-
- SUB list.txt /strip
-
- Replace multiple spaces with tab characters where possible.
-
- 19
-
-
-
- SUB list.txt /tab
-
- In this case, tab size is assumed to be (modulo) eight spaces.
-
- Replace all tabs with spaces in .C files edited with a 4-column-tab
- editor for compatibility with itself and the rest of the world.
-
- SUB *.c /notab=4
-
- In all files ending in .C on the current drive, replace 4 column tabs
- with eight column tabs.
-
- SUB \...*.c /notab=4/tab=8
-
- Now let's turn to operations requiring pointers to locate the columns
- in which the operations are to take place.
-
- Delete the first four columns of every line.
-
- SUB list.txt /delete=4
-
- causes four characters to be deleted, but which four? Unless otherwise
- stated, there is an implied pointer to column 1, an implied /at=1 or
- /before=1. It is always better to state assumptions.
-
- SUB list.txt /delete=4 /at=1
-
- To shift all text one inch to the right for printing and binding
- requires
-
- SUB report /insert=" " /before=1
-
- Insertion text containing tabs or blanks must be quoted. This text,
- eight blanks, must therefore be quoted.
-
- Duplicate columns 10 through 13, inserting them before column 20 in
- each line of a file.
-
- SUB table.2 /copy=10,13 /before=20
-
- All text after column 20 is shifted four columns to the right. Nothing
- is deleted or overwritten unless that action is specifically requested
- with /delete.
-
- You may not always know the exact columns in a file in which the
- operation should take place. Operations can be tied to specific text
- in each line with the /for modifier rather than to particular columns.
- In a file with the lines
-
- image1.dat
- imagetst.dat
- screen.iq
-
-
- 20
-
-
- the command
-
- SUB x y /for=. /delete=4
-
- creates the new file Y containing
-
- image1
- imagetst
- screen
-
- /For=text is, in effect, a variable /at or /before.
-
- If the /for text occurs more than once in a line, you can restrict the
- search for that text to a specific range within the line.
-
- SUB filelist.2 /delete=4 /for=.bat /from=15,30
-
- restricts the search for the string ".bat" to columns 15 through 30. A
- file containing duplicate text
-
- autoexec.bat autoexec.bat
- config.sys config.sys
- x.bat x.bat
-
- is changed to
-
- autoexec.bat autoexec
- config.sys config.sys
- x.bat x
-
- after processing. Lines missing the target text ".bat" are skipped.
-
- Illustrate the importance of the order of execution as multiple
- operations are applied to a file. In a file with the line
- "123456789abcdef", replace "567" with "abc". /Copy without /delete
- results in an insertion rather than a replacement. Modified by
-
- SUB x y /at=5 /delete=3
-
- the line becomes "123489abcdef". Modifying the result by
-
- SUB y z /at=5 /copy=7,9
-
- yields "1234abc89abcdef". These two operations to replace "567" by
- "abc" (columns 5 - 7 with 10 - 12) can be applied by the single command
-
- SUB x z /copy=7,9 /at=5 /delete=3
-
- Notice that although the order in which Command Modifiers are placed on
- the command line is unimportant and has no effect on the order of
- execution, the order of execution is critical and is fixed by
- convention. (See Notes Order of Execution.)
-
- 21
-
-
- Where ever the string "Copyright 1990" occurs in .HEL files, replace it
- with "Copyright 1991".
-
- SUB *.hel * /for="copyright 1990" /delete=14 /insert="Copyright 1991"
-
- SUB can be used to accomplish global changes across many files, but it
- is rather tricky. Since the /for command modifier is really a dynamic
- /at=column, you must specify /delete or "Copyright 1991" will simply be
- inserted before "copyright 1990", not exactly the replacement operation
- desired. The /for string is case insensitive. With the /insert
- string, however, you get the case you specify.
-
- All matching files are updated (copied) whether there are changes or
- not.
-
- Illustrate SUB's limited ability to rename files. In all files in the
- current directory beginning with a "T" and with extension .DAT, delete
- columns 15 - 21 of each line and store the results in similarly named
- files with the extension .S1.
-
- SUB t*.dat *.s1 /delete=6 /at=15
-
-
- NOTES:
-
- File Renaming Conventions -
-
- There are three ways to specify the output filename[s] for the SUB
- command.
-
- Case 1:
-
- SUB file_1
-
- file_1 is read and renamed file_1.BAK at the command's conclusion.
- file_1 is the name given to the newly created file.
-
- Case 2:
-
- SUB file_1 file_2
-
- file_1 is read.
- file_2 is created.
-
- Only in Case 2 are files permitted to be in different directories or on
- different drives.
-
- Case 3:
-
- SUB *.ext1 *.ext2
-
- .ext1 files are read.
- .ext2 files are created.
-
-
- 22
-
-
- General wildcards are permitted in the file_1 name. A single
- all-inclusive wildcard is permitted in the file_2 name but not in the
- extension.
-
- SUB file_1 *
- and
- SUB file_1 *.*
- are the same as Case 1 "SUB file_1".
-
- Internal logic insures that the input and output filenames are not
- identical: that an output file cannot overwrite itself. An output file
- can, however, overwrite another file.
-
- Order of Execution -
-
- The order of application of multiple Command Modifiers to each line of
- the file is:
-
- /notab /delete /insert /copy /truncate /pad /strip /tab
-
- This order helps insure intended, predictable, and uniform results.
-
-
- 23
-
-
- XDEL
- Recursively deletes files and removes directories operating in either
- the default normal mode or in a secure overwrite mode.
-
- XDEL deletes hidden, readonly, and system files or files by date.
- Verification is available on the command, directory, or file levels,
- or can be bypassed completely for batch operaions.
-
- The secure overwrite mode is flexible, allowing you to specify the
- number of overwirtes and whether they are with random data or with
- patterns of your own choosing.
-
- usage:
- xdel file-spec [/Command_Modifiers...]
-
- file-spec:
- A wildcarded recursive file specification.
-
- Command_Modifiers:
-
- /before /directories /hidden /list /modified /patterns /pause
- /readonly /secure /since /system /unmodified /verify
-
-
- EXAMPLES:
-
- If NAME is a file, delete it. If it is a directory, delete all files
- within it (not recursively), and then remove it if empty.
-
- XDEL name
-
- Delete the contents of the current directory but no subdirectories.
-
- XDEL *.*
-
- Delete the contents of the current directory and recursively the
- contents of all subdirectories.
-
- XDEL ...
-
- Delete all files in the current directory and recursively in all
- subdirectories below it verifying only at the directory level.
-
- XDEL ... /verify
-
- Delete all .BAK files from the C: drive.
-
- XDEL c:\...*.bak
-
- Delete all files from the A: drive leaving the directory structure
- intact.
-
- XDEL a:\... /nodirectories
-
-
- 24
-
-
- Delete all files with the extension .LTR in the current directory
- created before yesterday appending their names to a file as they are
- deleted.
-
- XDEL *.ltr /before=yesterday /list=all /nopause >> deleted.log
-
- Delete the backup files on drive A: which are marked readonly.
-
- XDEL a:*.* /readonly
-
- Delete all files with the extension .LTR from the current directory
- overwriting them with random numbers two times, and a final time with
- zero's.
-
- XDEL *.ltr /secure=3/pattern=0
-
- While requesting verification at the directory and file levels, delete
- all files under the \USER directory which are unmodified (already
- backed up).
-
- XDEL \user... /unmodified /verify=all
-
- Hint: When in doubt about the exact effect of an XDEL file spec syntax,
- try it first with the XDIR command which is similar in operation and a
- lot safer!
-
-
- NOTES:
-
- XDIR and XDEL Contrasted -
-
- In general, the xdel command parallels the xdir command quite closely
- in operation. If you want to delete a certain set of files, especially
- with recursive deletes, you may want to try the same syntax with the
- xdir command first. There are some significant differences, however.
-
- The attributes modifiers are exclusive with xdir and inclusive with
- xdel. The command "xdir *.* /readonly" will list ONLY readonly files.
- "xdel *.* /readonly" must be used to delete readonly files and will
- delete readonly files AS WELL AS normal files. To delete the standard
- system files, for example, requires a /system /hidden and /readonly
- combination.
-
- The xdir and xdel commands both do depth first descents on recursive
- operations, traveling down each successive subdirectory tree to the
- bottom before retracing upward to take alternate paths. The order
- of operation is different, however. Xdir lists each entire subdirectory
- as it is encountered while xdel travels the entire extent of the
- first branch before it begins to delete. Only when it encounters
- a subdirectory with no subdirectories within it does it begin file
- deletion. Then it backs out of the now empty subdirectory, removes
- it, and continues to process, trying to descend first, and then when
- at the bottom, deleting. The very last directory whose contents are
- deleted is the top level directory. The operation also takes place
-
- 25
-
-
- in alphabetic order. If, horror of horrors, you discover that you're
- deleting the wrong tree and do a frantic <CTRL> C or hit the Big Red
- Switch, upon recovery you should be able to tell pretty easily where
- the delete stopped. (This is NOT recommeded procedure!)
-
- During a delete, if your current directory is in a path being deleted,
- the current directory and its parent directories are not removed.
- Files continue to be deleted as requested. (See xdel -help /directory
- for examples.)
-
- Volume labels (attribute V in the dump command) are not deletable by
- xdel.
-
- Secure Deletes -
-
- /Secure deletes remove all directory information for all deleted files
- within the delete path, independent of when those files were deleted.
-
- You can remove all directory information about all previous files
- on the entire disk by requesting a /secure delete on a non-existent
- file (e.g. xdel \...*.qqq /secure). Directory information would be
- removed, but there is no easy or complete way to overwrite sectors
- once they are deallocated. (Creating a hugh file to scavenge all
- free clusters and then doing a /secure delete on that file would help
- but would not be a complete answer. See the example below.)
-
- Demonstrate that overwriting a disk sector with a new file may not
- remove all the orignal data. (See /secure.)
-
- Create a small file with the sequence
- copy con x
- Hi! <Ctrl>Z
-
- and use dump to dump the disk sector used by file x:
- dump x /cluster
- dump /disk=n,m ; where n,m are the sectors used by x's cluster.
-
- If you are working with an old, much-used disk, you'll see previously
- deleted data which was not overwritten by the creation of x and will
- never have a chance of being overwritten until the little file x is
- first extended or itself deleted.
-
- No attempt is made during a secure delete to overwrite the FAT multiple
- times or with random data. It is just too dangerous, and there can be
- multiple FAT's. The most information anyone could get from your FAT
- with analysis of the once-overwritten information would be the chain
- of clusters comprising your securely deleted file. And that assumes
- he could get the starting cluster. Security ultimately rests in the
- secure deletion of the data itself, not of pointers to it from the FAT
- or from the directory entry.
-
- 26
-
-
- XDIR
- Recursively lists files in directory trees giving subtotals and
- grandtotals of file sizes and disk allocations. Bottom line
- enthusiasts can specify totals or grandtotals only - without file
- detail. Directories are displayed in UPPER case and regular files in
- lower case for easy discrimination. The defualt sort order is
- alphabetic unless you request ordering by file size or date.
-
- Searches can specify hidden, readonly, system, or modified files only,
- and can limit the scope of a search before or after any time and date,
- or us the generic keywords "yesterday" and "today".
-
- usage:
- xdir [file-spec] [/Command_Modifiers...]
-
- file-spec:
- A wildcarded recursive file specification. If none is given, the
- current directory is assumed.
-
- Command Modifiers:
- /allocated /archive /attributes /before /bydate /bysize /columns
- /date /debug /directories /foot /full /grandtotal /heading
- /hidden /modified /pause /readonly /since /size /system
- /total
-
-
-
- EXAMPLES:
-
- List all files in the current directory and recursively in all
- subdirectories below it.
-
- XDIR ...
-
- Produce a full listing to reveal all that is known about all files in
- the current directory.
-
- XDIR /full
-
- Rather than ask for a /full listing, you can specify any combination of
- the components of a /full listing:
-
- /size
- /allocated
- /date
- /attributes
-
- Determine how much space you could save on your disk by deleting all
- the .BAK files from the current directory.
-
- XDIR *.bak /allocated
-
-
- 27
-
-
- Find the total size by directory of all files on the C: drive.
-
- XDIR c:\... /total
-
- Find the total number, size, and allocation of all .DOC files on the
- current drive.
-
- XDIR \...*.doc /grandtotal
-
- List all files under the \USER directory modified since the last backup.
-
- XDIR \user... /modified
-
- Estimate how many diskettes will be needed for the next incremental
- backup.
-
- XDIR \... /modified /grandtotal
-
- /Modified gives the same results as /archive.
-
- List all the files which have been created or changed today on the
- current drive.
-
- XDIR \... /since=today
-
- List all the files in the DOCUMENT directory created or last updated in
- May.
-
- XDIR document /since=1-May /before=1-June
-
- Find the oldest program in your \DOS executable directory.
-
- XDIR \DOS /bydate
-
- The newest files sort to the top, the oldest to the bottom.
-
- List all files in the current directory sorted by size and which have
- been created or modification since the beginning of yesterday.
-
- XDIR /bysize /since=yesterday
-
- Check your whole disk for one or more copies of a misplaced document.
-
- XDIR \...northern.doc
-
- Check your disk for hidden or readonly files.
-
- XDIR \... /hidden /readonly
-
- Output a list of all the files on your C: disk along with their sizes
- for later sorting by the DOS sort utility.
-
- XDIR c:\... /size /noheading /nofoot /nodirectories /nopause>slist
-
-
- 28
-
-
- /Nodirectories is added because you aren't interested in including
- directories in your list. /Nopause is necessary so that the output
- isn't hung up waiting for you to strike a key in response to invisible
- "more" messages. /Noheading and /nofoot remove separating headers and
- feet from between directory contents resulting in one long list.
-
- Note that only the names of the files, not the directories in which
- they reside will be included. Different files with the same name but
- residing in different directories will loose their unique identities.
-
- Find a file whose name you cannot remember and whose location you don't
- know. You do recall that the file was called sales-something, or was
- it something-sales? Use multiple wildcards and recursive notation to
- search the whole disk for it.
-
- XDIR \...*sales*
-
- You have a directory named FINAL containing 175 files whose names you
- want to use in a listing documenting a new product. Output the names
- in alphabetic order to a file for later editing.
-
- XDIR final /column=1 /noheading /nofoot /nopause > prod.lis
-
- Without /column=1 and in the absence of outputing any other file
- information (/size, /allocate, /date, or /attributes), the output would
- have defaulted to five columns wide, not the single-column listing
- format desired.
-
- Preserve an image of the directory structure of your C: drive.
-
- XDIR c:\... /directories /nopause > dir_skel
-
- /Directories causes only directories to be listed.
-
- You're not sure about the ins and outs of the syntax of the date/time
- modifiers of the /before /since Command Modifiers and want to
- experiment using /debug to test their use.
-
- XDIR /debug=date /before=6-13,9
-
- Note that /debug=date must precede /before on the command line. The
- program's interpretation of your entry is displayed, but no directory
- listing is made. /Debug=path shows the full expansion of the file
- specification.
-
- 29
-
-
- XHELP
-
- Supplements the help built into each command and becomes your first
- stop if you don't know what you're looking for. It contains a brief
- description of each program in "DOS Extensions for Professionals" as
- well as examples, notes, and discussions of features common to all
- commands.
-
- usage:
- xhelp [Command] [General Topics] [-ALL] [/nopause]
-
- Commands:
-
- diff dump makehelp search split sub xdel xdir xhelp
-
- General Topics:
- -BUG_REPORTING -LICENSE -MODIFIERS -WILDCARDS
-
- EXAMPLES:
-
- Type XHELP by itself to get a list of all the commands in "DOS
- Extensions for Professionals".
-
- XHELP
-
- If you want a high level view of what a particular command does or a
- list of its Command Modifiers, enter the command's name after XHELP.
-
- XHELP split
-
- Notes and examples are also included with the list of command
- modifiers.
-
- There are several general topics which, for your convenience, are also
- stored on-line in XHELP. Enter the general topic's name after XHELP
-
- XHELP -bug_reporting
-
- If you forget which general topics are treated, enter
-
- XHELP -
-
- for a listing of them all.
-
- 30
-
-
- GENERAL TOPICS:
-
-
- Command Modifiers
-
- Command Modifiers are special command line arguments which begin with
- a "/" and alter the basic command's action in some way as in
-
- xdir /hidden
-
- Command Modifiers are delimited by a space or their "/" from the
- preceding command, command argument, or Command Modifier.
-
- The order of Command Modifiers among themselves or among other
- command arguments is unimportant. (The order of other command
- arguments is, in general, significant.)
-
- Only enough characters to unambiguously identify a Command Modifier
- must be given after the "/". Ambiguously matching entries are listed.
-
- A "/" by itself causes all possible Command Modifiers to be listed.
- A "-" by itself causes all possible Help Topics to be listed.
-
- Command Modifiers should be fully spelled out in batch files to
- avoid possible future ambiguities in case new Command Modifiers are
- ever added and for clearer documentation.
-
- Command Modifiers which require values are followed by an "=" and
- the value as in "/date=today". Multiple values are "," separated.
-
-
-
- Wildcards and Recursive Notation
-
- The wildcard and recursive notation supported by many of the DOS
- Extensions for Professionals' commands are a superset of DOS
- wildcards and can be applied to partial or complete DOS file
- specifications.
-
- C:\directory_path\filename.ext
-
- Wildcards apply exclusively to the filename portion of the
- specification and the recursive notation to the directory path.
-
- Supported notation:
-
- ? - matches a single character in a filename or extension.
-
- * - matches 0 or more characters in a filename or extension.
-
- ... - matches 0 or more directory names in a recursive descent
- down a directory tree.
-
- Note that leading and multiple wildcards are supported.
-
- 31
-
-
- Implied Wildcards:
-
- Some commands support implied wildcards. Others do not. In general,
- those commands which involve read-only activity such as dir, xdir, and
- search use the broader implied wildcards. Commands such as sub, xdel,
- and copy, which alter files, do not support implied wildcards but
- enforce a stricter interpretation of the user's command.
-
- The ins and outs of implied wildcards are subtle. Many people lead
- full and meaningful lives never consciously learning the rules. They
- are meant to be natural.
-
- Implied wildcards are covered here so you won't be upset when some
- commands behave differently than others and so you'll understand why
- the details of the following examples don't hold for all commands.
-
- Notation Implied Wildcard Strict Interpretation
-
- xyz xyz.* xyz.
-
- xyz. xyz. xyz.
-
- * *.* *.
-
- C: C:*.* (XDEL) C: (DEL)
-
- The dir/xdir commands are peculiar in their approach to filenames which
- are directories.
-
- xdir ABC gives a listing of the CONTENTS of directory ABC.
-
- xdir A* ditto if A* is unique, otherwise it lists at the
- current level as in:
-
- ABC
- afile.dat
-
-
-
- Examples of Wildcard and Recursive Notation:
-
- ... or ...*.*
- Match all files in this or any subordinate directories.
-
- \...*.c or \...\*.c
-
- Match all files ending with a .c extension found in any
- directory in the current drive.
-
- C:\dos...*op*.??? or C:\dos\...*op*.??? or C:\dos\...\*op*.???
-
- Match all files on the C: drive in the \DOS directory tree
- which contain the letters "op" and a three character
- extension.
-
- 32
-
-
- ..\...xyz or ..\...xyz.* or ..\...\xyz.*
-
- Match all files recursively descending from one level up
- from the current directory with the name xyz and any or no
- extension.
-
- xyz.
- Match a file in the current directory with the name xyz
- and no extension.
-
- Note: The ellipsis (...) must be the final portion of the path
- specification. Split specifications
- (e.g. \abc\def\...\xyz\file.ext)
- are not supported.
-
-
-
- Bug Reporting:
-
- Every effort has been made to thoroughly exercise DOS Extensions for
- Professionals in a variety of circumstances. The fact remains,
- however, that no non-trivial work of software is completely bug free.
-
- If you should encounter an operational anomaly, there are several
- steps which you can take to make convergence on a solution as
- efficient and painless as possible.
-
- 1. Verify the repeatability of the occurrence that you haven't
- made a typo or silly mistake.
-
- 2. Review the documentation. Maybe the command is working
- properly, but not the way you think it should. (If an
- operation is, in your opinion, too difficult or counter-
- intuitive, suggest a better solution.
-
- 3. Programs can fail from resource exhaustion. In general, this
- mode of failure is not a bug. If an error message tells you
- that you are out of memory or disk space, you probably are.
- (The First Rule of Successful Computing: BELIEVE ALL ERROR
- MESSAGES. Surprisingly often they contain at least grain of
- truth, especially when interpreted from the program's myopic
- viewpoint.)
-
- 4. Try to discover the essence of the failure. Reproduce it in
- its simplest scenario. This step is the hardest part of
- tracing down a bug. If you can do this, we'll have a much
- better chance of correcting the underlying problem.
-
- 5. Suggest a work-around if possible or applicable.
-
- 6. Send a clear explanation of the bug and the work you've done
- to try to isolate it. Send pertinent information about your
- computer, its setup, and whether you've observed this failure
- on other machines. If the failure requires a lot of data or a
- complicated scenario, send a disk configured to demonstrate it.
-
- 33
-
-
- 7. All correspondence will be given careful and thorough
- consideration and, when practical, will be followed by prompt
- action.
-
-
-
- LEGALITIES
-
- Copyright:
-
- The collection of software described in this file and contained on
- this disk is the Shareware Version of "DOS Extensions for
- Professionals" (the Software) and is Copyright 1991 John B. Allison.
-
- Ownership:
-
- You have purchased or otherwise obtained media containing a copy of
- the Shareware Version of "DOS Extensions for Professionals". The
- Software contained on the media and all rights pertaining thereto
- remain the sole property of John B. Allison. By continuing to use the
- Software, you indicate your acceptance of the terms and conditions
- outlined below.
-
- Shareware License:
-
- You are permitted to use the Software for an evaluation period of
- THREE WEEKS. After the evaluation period, you must either remove all
- copies of the Software from your computer system(s) and refrain from
- all additional use, or register your copy of the Software with
-
- Allison Software
- 166 Shady Lane
- Apollo, PA 15613 USA
-
- (412) 727-2198
- CompuServe 72600,1200
-
- (See the file REGISTER.DOC on the distribution disk for registration
- instructions.)
-
- Shareware Distribution:
-
- You may give copies of the Software IN ITS UNMODIFIED ENTIRETY to
- friends or to other parties.
-
- You may distribute copies of the Software IN ITS UNMODIFIED ENTIRETY
- on a commercial basis for a fee not to exceed SIX DOLLARS (US), or you
- may post the Software on electronic bulletin boards if you package the
- Software so that it must be downloaded as a single unit IN ITS
- UNMODIFIED ENTIRETY.
-
- 34
-
-
- ASP Member:
-
- This program is produced by a member of the Association of Shareware
- Professionals (ASP). ASP wants to make sure that the shareware
- principle works for you. If you are unable to resolve a shareware-
- related problem with an ASP member by contacting the member directly,
- ASP may be able to help. The ASP Ombudsman can help you resolve a
- dispute or problem with an ASP member, but does not provide technical
- support for members' products. Please write to the ASP Ombudsman at
- 545 Grover Road, Muskegon, MI 49442 or send a CompuServe message via
- CompuServe Mail to ASP Ombudsman 70007,3536. The OMB may be contacted
- by FAX by sending to the ASP FAX number: (616) 788-2765. In communi-
- cation with the OMB, please include a telephone number and/or FAX
- if available.
-
-
- Limited Warranty:
-
- THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
- EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- THE ENTIRE RISK AS TO THE QUALITY AND PERFOMANCE OF THIS SOFTWARE IS
- YOURS. SHOULD THIS SOFTWARE PROVE DEFECTIVE, YOU (AND NOT JOHN B.
- ALLISON, ALLISON SOFTWARE, OR AN AGENT) ASSUME THE ENTIRE COST OF ALL
- NECESSARY SERVICING, REPAIR, OR CORRECTION.
-
- SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO THE
- ABOVE EXCLUSION MAY NOT APPLY TO YOU. THIS WARRANTY GIVES YOU SPECIFIC
- LEGAL RIGHTS, AND YOU MAY ALSO HAVE OTHER RIGHTS WHICH VARY FROM STATE
- TO STATE.
-
-
- Limitation of Remedies:
-
- IN NO EVENT SHALL JOHN B. ALLISON, ALLISON SOFTWARE, OR AN AGENT BE
- LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION,
- DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF
- BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING OUT OF THE
- USE OF OR INABILITY TO US THIS SOFTWARE, EVEN IF JOHN B. ALLISON OR
- ALLISON SOFTWARE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
- SOME STATES DO NOT ALLOW THE EXCLUSION OF LIABILITY FOR INCIDENTAL
- OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION OR EXCLUSION MAY
- NOT APPLY TO YOU.
-
- This agreement shall be governed by and construed in accordance with
- the laws of the Commonwealth of Pennsylvania and the applicable laws
- of the United States of America and shall inure to the benefit of John
- B. Allison dba Allison Software and any successors, administrators,
- heirs, and assigns. Any action or proceeding brought by either party
- against the other arising out of or related to this agreement shall be
- brought only in a Commonwealth or Federal Court of competent
- jurisdiction located in Allegheny County, Pennsylvania. The parties
- hereby consent to in personam jurisdiction of said courts.
-